package com.huilian.iotbox.admin.wap.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.huilian.iotbox.admin.wap.dao.DeviceFaultRecordDao;
import com.huilian.iotbox.admin.wap.service.DeviceFaultRecordService;
import com.huilian.iotbox.data.common.RedisKey;
import com.huilian.iotbox.data.dto.DeviceFaultRecordDto;
import com.huilian.iotbox.data.vo.DeviceFaultRecordVo;
import com.huilian.security.sms.common.ServerResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.io.Serializable;
import java.util.List;

@Service
@Slf4j
public class DeviceFaultRecordServiceImpl implements DeviceFaultRecordService {
    @Resource
    private DeviceFaultRecordDao deviceFaultRecordDao;
    @Autowired
    private RedisTemplate<String, Serializable> redisCacheTemplate;
    @Override
    public PageInfo findDeviceFaultRecord(DeviceFaultRecordDto deviceFaultRecordDto) {
        PageHelper.orderBy("(dfr.state is null || dfr.state = 0) DESC,dfr.createTime DESC");
        PageHelper.startPage(deviceFaultRecordDto.getPageNum(), deviceFaultRecordDto.getPageSize(), true);
        List<DeviceFaultRecordVo> list = deviceFaultRecordDao.findDeviceFaultRecord(deviceFaultRecordDto);
        PageInfo pageInfo = new PageInfo(list);
        return pageInfo;
    }

    @Override
    public ServerResponse updateState(DeviceFaultRecordDto deviceFaultRecordDto) {
        DeviceFaultRecordVo deviceFaultRecordVo = deviceFaultRecordDao.findDeviceFaultRecordByUserId(deviceFaultRecordDto);
        if(deviceFaultRecordVo == null){
            return ServerResponse.createByError("该故障信息不属于此账号");
        }
        Integer result = deviceFaultRecordDao.updateState(deviceFaultRecordDto);
        String memberPayDetailKey = String.format(RedisKey.LIMITATION_SIMULTANEOUS_PAYMENT_VENDING_MACHINE, deviceFaultRecordVo.getDeviceId());
        redisCacheTemplate.delete(memberPayDetailKey);
        if(result == 1){
            return ServerResponse.createBySuccess();
        }else {
            return ServerResponse.createByError("处理出错");
        }

    }

    @Override
    public ServerResponse statRecord(DeviceFaultRecordDto deviceFaultRecordDto) {
        DeviceFaultRecordVo deviceFaultRecord = deviceFaultRecordDao.findDeviceStat(deviceFaultRecordDto);

        return ServerResponse.createBySuccess(deviceFaultRecord);
    }
}
